package com.enation.app.javashop.core.goods.service;

import com.enation.app.javashop.core.goods.model.enums.QuantityLogType;
import com.enation.app.javashop.core.goods.model.vo.GoodsQuantityVO;

import java.util.List;


/**
 * 商品库存接口
 * @author fk
 * @version v2.0
 * @since v7.0.0
 * 2018年3月23日 上午11:47:29
 */
public interface GoodsQuantityManager {

	/**
	 * 增加库存
	 * @param  orderSn 订单编号
	 * @param goodsQuantity 要增加的库存vo
	 * @param logType 日志类型
	 * @return 如果增加成功返回真，否则返回假
	 */
	boolean addGoodsQuantity(String orderSn,GoodsQuantityVO goodsQuantity, QuantityLogType logType);



	/**
	 * 库存扣减接口
	 * @param orderSn  订单编号
	 * @param logType 日志类型
	 * @param goodsQuantityList 要扣减的库存vo List
	 * @return 如果扣减成功返回真，否则返回假
	 */
	boolean reduceGoodsQuantity(String orderSn, QuantityLogType logType, List<GoodsQuantityVO> goodsQuantityList);


	/**
	 * 回滚某个订单的库存出库
	 * @param orderSn 订单编号
	 */
	void rollbackReduce(String orderSn);


	/**
	 * 商家中心单独维护库存接口
	 * 
	 * @param goodsQuantityList
	 */
	void updateGoodsQuantity(List<GoodsQuantityVO> goodsQuantityList);

}
